package com.antler.smt.portal.mapper;

import com.antler.smt.entity.OrderEntity;
import com.antler.smt.enums.ResultCodeEnum;
import com.antler.smt.request.portal.OrderReq;
import com.antler.smt.request.portal.OrderTestFileReq;
import com.antler.smt.response.admin.GetOrderListResp;
import com.antler.smt.response.admin.GetUserListResp;
import com.antler.smt.response.base.Result;
import com.antler.smt.response.portal.GetOrderDetailResp;
import com.antler.smt.response.portal.OrderClassifyInfoList;
import com.github.pagehelper.Page;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *  订单Mapper
 *
 * @author zhangyi
 * @date 2018-03-26 11:36
 */
@Repository
public interface OrderInfoMapper {

    /**
     * 获取项目专员处理单的数量
     * @param id
     * @return 获取处理单的数量
     */
    long getUserDisposeOrderList(Long id);

    /**
     * 通过订单找到其服务商表
     *
     * @param id 订单id
     * @return 服务商id
     */
    long getSupplierIdByPrimaryId(long id);

    /**
     *  通过服务商id获取其订单列表
     *
     * @param supplierId
     * @return
     */
    List<GetOrderListResp> getSupplierOrderList(long supplierId);


    /**
     *  根据会员登陆信息查询此采购商的订单详情 (全部订单，已完成，未完成，未通过)
     *
     * @param memberId
     * @return
     */
    List<GetOrderListResp> selectOrderByMember(Long memberId);

    /**
     * 查询此采购商的订单详情
     *
     * @param memberId
     * @return
     */
    List<GetOrderListResp> getSupplierOrderClassifyList(Long memberId);

    /**
     * 更新支付方式
     *
     * @param orderEntity
     * @return
     */
    int updateOrderPayStyle(OrderEntity orderEntity);

    /**
     *  返回订单相关详细信息
     *
     * @param orderId
     * @return
     */
    GetOrderDetailResp orderDetailInfo(Long orderId);

    /**
     * 获取对接项目专员 id
     *
     * @param requirementId
     * @return
     */
    long getUserInfoByRequirementId(Long requirementId);

    /**
     * 获取商务专员的id
     *
     * @param requirementId
     * @return
     */
    long getBusinessUserInfoByRequirementId(Long requirementId);
    /**
     * 上传文件附件id绑定
     *
     * @param orderTestFileReq
     * @return
     */
    int updateUploadTestFile(OrderTestFileReq orderTestFileReq);

    /**
     * 获取非余额消费的总金额
     *
     * @param memberId
     * @return
     */
    Long getShopMoney(Long memberId);

    /**
     * 获取订单内的检验报告
     *
     * @param orderId
     * @return
     */
    List<String> getOrderFile(Long orderId);

    /**
     * 获取所有未完成的订单
     *
     * @return
     */
    Page<OrderEntity> getAllRoughOrderList();

    /**
     * 状态列表
     *
     * @param status
     * @return
     */
    Page<OrderClassifyInfoList> getClassifyOrderList(List<Integer> status);

    /**
     * 获取该服务商下的订单id列表
     *
     * @param supplierId
     * @return
     */
    List<Long> getOrderIdList(Long supplierId);

    /**
     * 更具发布需求id获取其订单信息
     *
     * @param requirementId
     * @return
     */
    OrderEntity getOrderInfoByRequirement(Long requirementId);

    /**
     * 获取订单实体
     *
     * @param id
     * @return
     */
    OrderEntity selectByPrimaryKey(Long id);
}





